
#ifndef _ATTRIBPROTOTYPE
#define _ATTRIBPROTOTYPE

#include <vector>
#include <string>
using namespace std;


class AttribPrototype
{
public:
  AttribPrototype( string _name, string _symbol );
  void applyOnVertex();
  void applyOnEdge();
  void applyOnFace();
  void setProperty( string _name, string _type, int _dir );
  string getName();
  vector<string> getPropertyNames();
  vector<string> getPropertyTypes();
  string getPropertyType( string _prop );
  int    getPropertySymb( string _prop );
  vector<int> getSymbol( int _d, int _s );
  bool isApplicableOnVertex() { return m_applyOnVertex; };
  bool isApplicableOnEdge()   { return m_applyOnEdge; };
  bool isApplicableOnFace()   { return m_applyOnFace; };
protected:
private:
  string m_name;
  string m_symbol;
  bool m_applyOnVertex;
  bool m_applyOnEdge;
  bool m_applyOnFace;
  vector<string> m_propertyName;
  vector<string> m_propertyType;
  vector<int> m_propertySymb;
};


#endif
